package Negocio;

import java.util.Vector;

import Persistencia.AdministradorPersistenciaPlan;


public abstract class Plan {
	
	private int numero;
	private String nombre;
	private float costoBase;
	private Vector <ItemPlan> items;

	public abstract float calcularCostoBase();
	
	//Inicio PR - Constructor
	public Plan(int numero, float costoBase, String nom) {
		super();
		this.numero = numero;
		this.costoBase = costoBase;
		this.nombre = nom;
		this.items = new Vector<ItemPlan>();
	}
	//Fin PR - Constructor
	
	//Inicio PR - Buscar Servicio 	
	public boolean tenesServicio(String nombre){
		for(int i=0;i<items.size();i++){
			if (items.elementAt(i).sosEsteServicio(nombre))
				return true;
		}		
		return false;
	}
	//Fin PR - Buscar Servicio 
	
    public void addItemPlan(ItemPlan i){
        items.add(i);  
        AdministradorPersistenciaPlan.getInstancia().insertItemPlan(this.numero, i);
    }

  //Inicio PR - Unidades libres en el Plan para un servicio dado
	public float unidadesLibres(String nombreServicio) {
		// TODO Auto-generated method stub
		for(int i=0;i<items.size();i++){
			if (items.elementAt(i).sosEsteServicio(nombreServicio))
				return items.elementAt(i).getUnidadesLibres();
		}
		
		return 0;
	}
	//Fin PR - Unidades libres
	
	//Inicio PR - Costo de la unidad adicional de un servicio del plan
	public double costoAdicional(String nombreServicio) {
		// TODO Auto-generated method stub
		for(int i=0;i<items.size();i++){
			if (items.elementAt(i).sosEsteServicio(nombreServicio))
				return items.elementAt(i).getCostoAdicional();
		}
		return 0;
	}
	//Fin PR - Costo de la unidad adicional

	public Vector <ItemPlan>  getItems() {
		// TODO Auto-generated method stub
		return items;
	}

	public boolean sosElPlan(int id) {
		// TODO Auto-generated method stub
		if (this.numero == id){
			return true;
		}
		return false;
	}
    
	public int getNumero(){
		return numero;
	}

	public float getCostoBase(){
		return costoBase;
	}

	public String getNombre() {
		return nombre;
	}
	
	public abstract boolean isAdicional();

	public void setNombre(String text) {
		nombre = text;
		
	}
	
	public void setNumero(int num) {
		numero = num;
		
	}

	public void setCostoBase(float parseFloat) {
		this.costoBase = parseFloat;
		
	}
	
	public Plan() {
		super();
		this.items = new Vector<ItemPlan>();
	}

}
